As any data is developed over time, multiple versions of the data are generated (as data files, databases, or data stores), potentially by multiple people, working on separate copies. At various times it is desirable to compare the different versions of the data, and potentially to “merge” the changes made by different edits to each of the versions of the data.
For data in the form of one or more “text” files, such as simple documents, many tools have been developed using various algorithms to identify what changes are made and to provide interfaces to combine the changes. All of these algorithms generally operate by identifying file “regions” that are identical or different. These “regions” generally take the form of one or more lines of the file. Once the differences are identified, merging usually involves simply adding and/or removing lines from the “result” file to better match the source file(s).
In an Integrated Circuit (IC) design environment, the IC data does not generally take the form of simple “text” files, but is instead in the form of “databases,” such as one or more binary files, data stores, data libraries, or other types of IC data. The IC data may include (very) large numbers of “objects” of various types with various different “properties.” By its nature, as opposed to “text” files, an IC design is often three-dimensional, having multiple layers (for example, metal1, metal2, and metal3), which further increases the number of “objects” that need to be stored. The user generally interacts with such IC data through using graphical design tools. Therefore, an approach is needed for managing such complex data for ICs that goes beyond the standard text file data management.